package org.tik.mybatis.executor.statement;

import org.tik.mybatis.session.ResultHandler;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

/**
 * @ClassName: StatementHandler
 * @author: pengwei
 * @data 2022年10月18日 20:28:00
 */
public interface StatementHandler {

    /**
     * 准备语句
     *
     * @param connection
     * @return
     */
    Statement prepare(Connection connection);

    /**
     * 参数化
     *
     * @param stmt
     */
    void parameterize(Statement stmt) throws SQLException;

    /**
     * 执行查询
     *
     * @param stmt
     * @param resultHandler
     * @param <E>
     * @return
     */
    <E> List<E> query(Statement stmt, ResultHandler resultHandler) throws SQLException;
}
